The present invention relates to updating software.
In general, software refers to data, including instructions and/or content, that a data processing apparatus, such as a computer system, can process electronically. A software publisher typically provides software products, including updates to existing software products. An update is associated with one or more earlier versions of a software product and provides new components or modifies existing components of the software product. For example, a first version of a software product can be followed by one or more updated versions that are developed to implement new functions and/or to fix problems in earlier versions. Alternatively, e.g., as part of a business strategy, a software product can be developed in a relatively simple and affordable (or even free) basic version and updates can provide optional components, e.g., for additional charges. The optional components add extra features and/or complex functions to the basic version.
To facilitate the update process, a software product in a computer system can be associated with an updater application that can be part of the software product (either in the core or as a plugin) or a separate application. The updater is an application that requests and downloads update information, e.g., for the associated software product. The update information can be requested from one or more update servers. An update server is a server, e.g., on the Internet, that provides information for updates if requested by an update client, such as the computer system including the updater. If updates are available from the update server, the updater can present a user interface (“UI”) to the user who can select from the available updates. To install the selected updates, the updater can download and execute installer applications.
Complex software products and their updates, in particular optional components, often depend on other software components or specific hardware features. For managing dependencies, some updaters collect system information (including software and/or hardware information) about the update client, and send the system information to an update server. The update server evaluates the system information, selects, and offers updates that are suitable for the update client. In addition, the update server can use the system information to identify and offer new software products that are suitable for the update client, even if the new products are unrelated or only loosely related to the software product that is being updated.